package M_basic_k_line_analyse;
require Exporter;
@ISA = qw(Exporter);
@EXPORT = qw(k_line_basic_shape_analyes_init k_line_basic_shape_analyes );
#K线基本形态的分析主要在于图形本身的意义象征
#参考http://blog.sina.com.cn/s/blog_69c25a0d0102v8s1.html
#根据股票振幅，
#可将Ｋ线分为极阴、极阳，小阴、小阳，中阴中阳和大阴、大阳等线型。
# 小阴星和小阳星的波动范围在0.5%左右；
# 小阴线和小阳线的波动范围一般在0.6--1.5%；
#中阴线和中阳线的波动范围一般在1.6-3.5%；
# 大阴线和大阳线的波动范围在3.6%以上。
#然后开盘和收盘相等的情况为十字星
#强弱等级全部使用变量进行量化好进行比较
#然后是可以根据预测准确度进行进一步的修改
#按照波动等级，对下面的一些形态进行评分
#阳线================================
#无上影线，有下影线阳线实体长度小于线长度
#无上影线，有下影线阳线实体长度大于线长度

#无下影线，有上影线阳线实体长度小于线长度
#无下影线，有上影线阳线实体长度大于线长度

#上影线短，下影线长阳线实体长度小于线长度
#上影线短，下影线长阳线实体长度大于线长度

#上影线长，下影线短阳线实体长度大于线长度
#上影线长，下影线短阳线实体长度小于线长度

#上影线和下影线差不多阳线实体长度大于线长度
#上影线和下影线差不多阳线实体长度小于线长度

#只有实体的阳线

#阴线==================================
#无上影线，有下影线阴线实体长度小于线长度
#无上影线，有下影线阴线实体长度大于线长度

#无下影线，有上影线阴线实体长度小于线长度
#无下影线，有上影线阴线实体长度大于线长度

#上影线短，下影线长阴线实体长度小于线长度
#上影线短，下影线长阴线实体长度大于线长度

#上影线长，下影线短阴线实体长度大于线长度
#上影线长，下影线短阴线实体长度小于线长度

#上影线和下影线差不多阴线实体长度大于线长度
#上影线和下影线差不多阴线实体长度小于线长度

#只有实体的阴线

#十字星=================================
#无上影线，有下影线

#上影线短，下影线长

#无下影线，有上影线

#上影线短，下影线长

#上影线长，下影线短

#上影线和下影线差不多
#=======================================
#http://blog.sina.com.cn/s/blog_53a1ed300100a43r.html
#http://jingyan.baidu.com/article/219f4bf731e6a4de442d3837.html
my $end_old = -1.0;#当前的上期的收盘价
sub k_line_basic_shape_analyes_init
{
	$end_old = -1.0;
}

sub k_line_basic_shape_analyes
{
	#通过基本的图形分析确定形态
	#through day k line,get the basic information
	my ($date,$start,$max,$min,$end,$vol) = @_;
	#print "$date,$start,$max,$min,$end,$vol\n";
	my $k_line_desc = "";
	#首先是对K线本身形态的分析
	#根据开盘价与收盘价的波动范围也就是
	#股票振幅的计算主要方法：
 	#股票振幅=(当期最高价－当期最低价)/上期收盘价×100%
 	#日期从某个时间开始之前是没有收盘价的就用当日收盘价
 	#做一个大概的计算
	my $stock_price_amplitude = 0.0;
	if($end_old == -1.0) {
		$stock_price_amplitude = ($max - $min) / $end;
	} else {
		$stock_price_amplitude = ($max - $min) / $end_old;
	}
	$end_old = $end;
	#各种图表分布就在这些里面
	#也就是比如类似的图形上吊阳线在不同
	#的波动内分布，能量应该也是不同的
	#可以进行趋势判断，然后强弱作为发生的可能性
	#越弱，可能性就越小
	#小阴星和小阳星的波动范围在0.5%左右
	if($stock_price_amplitude <= (0.5 / 100)) {
		#然后再来进行阴阳的区分
		if($start < $end) {
			#说明买方力量不敢贸然行动，买入评级低
			#卖方作战失败，但是仍有卖出的动能
			#阳线
			#小阳星
		} elsif($start > $end) {
			#阴线
			#小阴星
		} elsif($start == $end) {
			#十字星线
		}
	} elsif($stock_price_amplitude >= (0.6 / 100) and
		 $stock_price_amplitude <= (1.5 / 100)) {
		#小阴线和小阳线的波动范围一般在0.6--1.5%
		if($start < $end) {
			#阳线
			#小阳线
		} elsif($start > $end) {
			#阴线
			#小阴线
		} elsif($start == $end) {
			#十字星线
		}
	} elsif($stock_price_amplitude >= (1.6 / 100) and
		 $stock_price_amplitude <= (3.5 / 100)) {
		#中阴线和中阳线的波动范围一般在1.6-3.5%
		if($start < $end) {
			#阳线
		} elsif($start > $end) {
			#阴线
		} elsif($start == $end) {
			#十字星线
		}
	} elsif($stock_price_amplitude >= (3.6 / 100)) {
		#大阴线和大阳线的波动范围在3.6%以上
		if($start < $end) {
			#阳线
		} elsif($start > $end) {
			#阴线
		} elsif($start == $end) {
			#十字星线
		}
	}
	#print "$date,$start,$max,$min,$end,$vol,$k_line_desc\n";
	return $k_line_desc;
}
